/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import DTO.Perfil;
import SQL.Conexion;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author SoftGroup
 */
public class PerfilesDAO {
    public ArrayList<Perfil> listarPerfiles (){
      
      ArrayList<Perfil> lista = new ArrayList<Perfil>();
      Connection conexion = Conexion.getConexion();
      try{
          String sqlCode = "SELECT * FROM perfil ";
          PreparedStatement busqueda = conexion.prepareStatement(sqlCode);
          ResultSet resultado = busqueda.executeQuery();
          while(resultado.next()){
              Perfil p = new Perfil();
              p.setCod_perfil(resultado.getInt("id_perfil"));
              p.setNom_perfil(resultado.getString("nom_perfil"));
              p.setMenuPrincipal(resultado.getBoolean("menu_principal"));
              p.setIngresoGarantias(resultado.getBoolean("ingreso_garantias"));
              p.setIngresoGarante(resultado.getBoolean("ingreso_garante"));
              p.setAprobacionGarantias(resultado.getBoolean("aprobacion_garantias"));
              p.setModificionGarantias(resultado.getBoolean("modificacion_garantias"));
              p.setModificacionGarante(resultado.getBoolean("modificacion_garante"));
              p.setEliminacionGarantias(resultado.getBoolean("eliminacion_garantias"));
              p.setEliminacionGarante(resultado.getBoolean("eliminacion_garante"));
              p.setTasacionGarantias(resultado.getBoolean("tasacion_garantias"));
              p.setRelacionGarantiaOperacion(resultado.getBoolean("relacion_garantia_operacion"));
              p.setRelacionGarantiaSeguro(resultado.getBoolean("relacion_garantia_seguro"));
              p.setMantencionTasacionGarantia(resultado.getBoolean("mantencion_tasacion_garantia"));
              p.setMantencionRelacionGarantiaOperacion(resultado.getBoolean("mantencion_relacion_garantia_operacion"));
              p.setMantencionRelacionGarantiaSeguro(resultado.getBoolean("mantencion_relacion_garantia_seguro"));
              p.setAlzamiento(resultado.getBoolean("alzamiento"));
              p.setAprobacionAlzamiento(resultado.getBoolean("aprobacion_alzamiento"));
              p.setBuscarListaGarantia(resultado.getBoolean("buscar_lista_garantia"));
              p.setFormularioTasacionGarantia(resultado.getBoolean("formulario_tasacion_garantia"));
              p.setInformeTotalGarantia(resultado.getBoolean("informe_total_garantia"));
              p.setReporteVencimientoGarantia(resultado.getBoolean("reporte_vencimiento_garantia"));
              lista.add(p);
            
          }
         resultado.close();
         conexion.close();
         }catch(SQLException e){
             System.err.printf("Problemas con la query"+e.getMessage());
         }catch(Exception z){ 
              System.err.printf("Problemas al listar"+z.getMessage());
         }
        return lista;
  }//fin del metodo listar perfiles
    
   public void modificarPerfil(Perfil perfil) {
        try {
            String sql = "UPDATE perfil"
                    + " SET menu_principal=?,ingreso_garantias=?,ingreso_garante=?,aprobacion_garantias=?,"
                    + "modificacion_garantias=?,modificacion_garante=? WHERE id_perfil=?";

            Connection conexion = Conexion.getConexion();
            PreparedStatement modifi = conexion.prepareStatement(sql);
            
            modifi.setBoolean(1, perfil.isMenuPrincipal());
            modifi.setBoolean(2, perfil.isIngresoGarantias());
            modifi.setBoolean(3, perfil.isIngresoGarante());
            modifi.setBoolean(4, perfil.isAprobacionGarantias());
            modifi.setBoolean(5, perfil.isModificionGarantias());
            modifi.setBoolean(6, perfil.isModificacionGarante());
            modifi.setInt(7, perfil.getCod_perfil());
            
            modifi.executeUpdate();

        } catch (Exception z) {
            javax.swing.JOptionPane.showMessageDialog(null, "Problemas en el metodo modificarPerfil" + z);
        }
    } // FIN METODO MODIFICAR PERFIL
    
    public Perfil buscarPerfiles (String nombre){
      
      Perfil perfil = new Perfil();
      Connection conexion = Conexion.getConexion();
      try{
          String sqlCode = "SELECT * FROM perfil WHERE nom_perfil=? ";
          PreparedStatement busqueda = conexion.prepareStatement(sqlCode);
          busqueda.setString(1, nombre);
          ResultSet resultado = busqueda.executeQuery();
          while(resultado.next()){
              perfil.setCod_perfil(resultado.getInt("id_perfil"));
              perfil.setNom_perfil(resultado.getString("nom_perfil"));
              perfil.setMenuPrincipal(resultado.getBoolean("menu_principal"));
              perfil.setIngresoGarantias(resultado.getBoolean("ingreso_garantias"));
              perfil.setIngresoGarante(resultado.getBoolean("ingreso_garante"));
              perfil.setAprobacionGarantias(resultado.getBoolean("aprobacion_garantias"));
              perfil.setModificionGarantias(resultado.getBoolean("modificacion_garantias"));
              perfil.setModificacionGarante(resultado.getBoolean("modificacion_garante"));
              perfil.setEliminacionGarantias(resultado.getBoolean("eliminacion_garantias"));
              perfil.setEliminacionGarante(resultado.getBoolean("eliminacion_garante"));
              perfil.setTasacionGarantias(resultado.getBoolean("tasacion_garantias"));
              perfil.setRelacionGarantiaOperacion(resultado.getBoolean("relacion_garantia_operacion"));
              perfil.setRelacionGarantiaSeguro(resultado.getBoolean("relacion_garantia_seguro"));
              perfil.setMantencionTasacionGarantia(resultado.getBoolean("mantencion_tasacion_garantia"));
              perfil.setMantencionRelacionGarantiaOperacion(resultado.getBoolean("mantencion_relacion_garantia_operacion"));
              perfil.setMantencionRelacionGarantiaSeguro(resultado.getBoolean("mantencion_relacion_garantia_seguro"));
              perfil.setAlzamiento(resultado.getBoolean("alzamiento"));
              perfil.setAprobacionAlzamiento(resultado.getBoolean("aprobacion_alzamiento"));
              perfil.setBuscarListaGarantia(resultado.getBoolean("buscar_lista_garantia"));
              perfil.setFormularioTasacionGarantia(resultado.getBoolean("formulario_tasacion_garantia"));
              perfil.setInformeTotalGarantia(resultado.getBoolean("informe_total_garantia"));
              perfil.setReporteVencimientoGarantia(resultado.getBoolean("reporte_vencimiento_garantia"));
              
            
          }
         resultado.close();
         conexion.close();
         }catch(SQLException e){
             System.err.printf("Problemas con la query"+e.getMessage());
         }catch(Exception z){ 
              System.err.printf("Problemas al listar"+z.getMessage());
         }
        return perfil;
  }//fin del metodo buscar perfil 
    
     public void modificarPerfil2(Perfil perfil2) {
        try {
            String sql = "UPDATE perfil"
                    + " SET eliminacion_garantias=?,eliminacion_garante=?,"
                    + "tasacion_garantias=?,relacion_garantia_operacion=?,relacion_garantia_seguro=? WHERE id_perfil=?";

            Connection conexion = Conexion.getConexion();
            PreparedStatement modifi = conexion.prepareStatement(sql);
            
            
            modifi.setBoolean(1, perfil2.isEliminacionGarantias());
            modifi.setBoolean(2, perfil2.isEliminacionGarante());
            modifi.setBoolean(3, perfil2.isTasacionGarantias());
            modifi.setBoolean(4, perfil2.isRelacionGarantiaOperacion());
            modifi.setBoolean(5, perfil2.isRelacionGarantiaSeguro());
            
            modifi.setInt(6, perfil2.getCod_perfil());
            
            modifi.executeUpdate();

        } catch (Exception z) {
            javax.swing.JOptionPane.showMessageDialog(null, "Problemas en el metodo modificarPerfil" + z);
        }
    } // FIN METODO MODIFICAR PERFIL
     
     public void modificarPerfil3(Perfil perfil3) {
        try {
            String sql = "UPDATE perfil"
                    + " SET mantencion_tasacion_garantia=?,mantencion_relacion_garantia_operacion=?,"
                    + "mantencion_relacion_garantia_seguro=?,alzamiento=? WHERE id_perfil=?";

            Connection conexion = Conexion.getConexion();
            PreparedStatement modifi = conexion.prepareStatement(sql);
            
            
            modifi.setBoolean(1, perfil3.isMantencionTasacionGarantia());
            modifi.setBoolean(2, perfil3.isMantencionRelacionGarantiaOperacion());
            modifi.setBoolean(3, perfil3.isMantencionRelacionGarantiaSeguro());
            modifi.setBoolean(4, perfil3.isAlzamiento());
            
            modifi.setInt(5, perfil3.getCod_perfil());
            
            modifi.executeUpdate();

        } catch (Exception z) {
            javax.swing.JOptionPane.showMessageDialog(null, "Problemas en el metodo modificarPerfil" + z);
        }
    } // FIN METODO MODIFICAR PERFIL
     
     public void modificarPerfil4(Perfil perfil4) {
        try {
            String sql = "UPDATE perfil"
                    + " SET aprobacion_alzamiento=?,buscar_lista_garantia=?,"
                    + "formulario_tasacion_garantia=?,informe_total_garantia=?,reporte_vencimiento_garantia=? WHERE id_perfil=?";

            Connection conexion = Conexion.getConexion();
            PreparedStatement modifi = conexion.prepareStatement(sql);
            
            
            modifi.setBoolean(1, perfil4.isAprobacionAlzamiento());
            modifi.setBoolean(2, perfil4.isBuscarListaGarantia());
            modifi.setBoolean(3, perfil4.isFormularioTasacionGarantia());
            modifi.setBoolean(4, perfil4.isInformeTotalGarantia());
            modifi.setBoolean(5, perfil4.isReporteVencimientoGarantia());
            
            modifi.setInt(6, perfil4.getCod_perfil());
            
            modifi.executeUpdate();

        } catch (Exception z) {
            javax.swing.JOptionPane.showMessageDialog(null, "Problemas en el metodo modificarPerfil" + z);
        }
    } // FIN METODO MODIFICAR PERFIL
}